#include <iostream>
#include <algorithm>
#include <vector>
#include <chrono>
#include "ej1.h"

using namespace std;


int busquedaBinaria(vector<int>  vector, int dato)              // O(log(n))
{
  int centro, inf = 0, sup = vector.size()-1;

  while(inf<=sup){
    centro = (sup+inf)/2;
    if(vector[centro] > dato)
    {
	    sup = centro-1;
    }
    else
    {
	     inf = centro+1;
    }
  }
  if (vector[centro]<=dato){return centro;}
  return centro-1;
}


vector<int> pedir_entrada(int &diasInspector, int &cantCamiones)  // O(n*log(n))
{
  vector<int> camiones;
  int x;

  cin >> diasInspector;
  cin >> cantCamiones;

  for(int i = 0; i < cantCamiones; i++)
  {
    cin >> x;
    camiones.push_back(x);
  }

  sort(camiones.begin(), camiones.end());

  return camiones;
}

void funcionPrincipal()
{
  //medicion de tiempos -->
  auto start = std::chrono::high_resolution_clock::now();
  //  <--
  
  int diasInspector, cantCamiones;         // entrada
  int diaMax = 0;                          // dia que vendra el inspector
  int cantMax = 0;                         // cantidad de camiones qe revisará
  int indiceUltimoDia = 0;                 

  vector<int> camiones = pedir_entrada(diasInspector, cantCamiones);    // O(n)

  for (int i = 0; i < cantCamiones; i++)                              // O(n*log(n))
  {
    int primerDia = camiones[i];
    int ultimoDia = primerDia+diasInspector-1;

    indiceUltimoDia = busquedaBinaria(camiones, ultimoDia);

    if ((indiceUltimoDia - i+1) > cantMax)
    {
      diaMax = camiones[i];
      cantMax = (indiceUltimoDia - i+1);
    }
  }

  //medicion de tiempos -->
  auto finish = std::chrono::high_resolution_clock::now();
  //  <--
  
  // <----Imprimir salida---->
  cout << diaMax << " " << cantMax << "     Tiempo = "<<std::chrono::duration_cast<std::chrono::microseconds>(finish-start).count() << endl; 

   return;
}



int main()
{

  while(cin.peek() != 48) {
    funcionPrincipal();
    cin.get();
  }
  return 0;
}







